import java.net.*;
import java.io.*;

public class Server
{
	public static void main(String args[])
	{
		ServerSocket serverSocket = null;
		Socket socket = null;
		InputStream inp = null;
		BufferedReader brinp = null;
		DataOutputStream out = null;
		PrintWriter outp = null;
		try{
		outp = new PrintWriter(new OutputStreamWriter(System.out, "Cp852"), true);
		}
		catch(UnsupportedEncodingException e){
			System.out.println("Nie mona ustawi strony kodowej Cp852.");
		outp = new PrintWriter(new OutputStreamWriter(System.out), true);
		}
		try{
			serverSocket = new ServerSocket(6666);
		}
		catch(IOException e){
			outp.println("Bd przy tworzeniu gniazda serwerowego.");
			System.exit(-1);
		}
		outp.println("Inicjalizacja gniazda zakoczona...");
		outp.println("Parametry gniazda: " + serverSocket);
		while(true){
			try{
				socket = serverSocket.accept();
			}
			catch(IOException e){
				outp.println(e);
			}
			outp.println("Nadeszo poczenie...");
			outp.println("Parametry poczenia: " + socket);
			try{
				inp = socket.getInputStream();
				brinp = new BufferedReader(new InputStreamReader(inp));
				out = new DataOutputStream(socket.getOutputStream());
			}
			catch(IOException e){
				outp.println("Bd przy tworzeniu strumieni.");
				System.exit(-1);
			}
			outp.println("Zakoczona inicjalizacja strumieni...");
			String line;
			outp.println("Rozpoczcie ptli gwnej...");
			while(true){
				try{
					line = brinp.readLine();
					outp.println("Odczytano lini: " + line);
					if((line == null) || line.equals("quit")){
		outp.println("Zakoczenie pracy 
z klientem: " + socket);
						socket.close();
						break;
					}
					else{
						out.writeBytes(line + "\n\r");
						outp.println("Wysano lini: " + line);
					}
				}
				catch(IOException e){
					outp.println("Bd wejcia-wyjcia.");
					break;
				}
			}
		}
	}
}
